﻿using System.IO;
using Styx;
using Styx.Helpers;
using System.ComponentModel;
using DefaultValue = Styx.Helpers.DefaultValueAttribute;
using Styx.Common;
using Styx.Common.Helpers;

namespace KingWoW
{
    public class EnhancementShamanSettings : Settings
    {
        public static EnhancementShamanSettings Instance = new EnhancementShamanSettings();

        public EnhancementShamanSettings()
            : base(Path.Combine(Styx.Common.Utilities.AssemblyDirectory, string.Format(@"CustomClasses/EnhancementShamanConfig/EnhancementShaman-Settings-{0}.xml", StyxWoW.Me.Name)))
        {
        }

        [Setting]
        [DefaultValue(28)]
        [Category("Settings PULL")]
        [DisplayName("PullDistance")]
        [Description("Distance to pull from")]
        public float PullDistance { get; set; }

        [Setting]
        [DefaultValue(20)]
        [Category("Settings REST")]
        [DisplayName("Drink mana%")]
        [Description("Drink at % mana")]
        public int ManaPercent { get; set; }

        [Setting]
        [DefaultValue(0)]
        [Category("Settings REST")]
        [DisplayName("Eat hp%")]
        [Description("Eat at % hp")]
        public int HealthPercent { get; set; }

        public enum ImbueType
        {
            DEFAULT,
            MANAL
        }

        [Setting]
        [DefaultValue(ImbueType.DEFAULT)]
        [Category("Settings IMBUE")]
        [DisplayName("ImbueType")]
        [Description("Imbue method if MANUAL set MH and OH imbue type below")]
        public ImbueType imbueType { get; set; }

        public enum ImbueWeaponType
        {
            WINDFURY,
            FLAMETONGUE,
            FROSTBRAND,
            ROCKBITER,
            EARTHLIVING
        }

        [Setting]
        [DefaultValue(ImbueWeaponType.WINDFURY)]
        [Category("Settings IMBUE")]
        [DisplayName("MainHand_imbue")]
        [Description("If Imbue method is MANUAL set MH imbue to this value")]
        public ImbueWeaponType MainHand_imbue { get; set; }

        [Setting]
        [DefaultValue(ImbueWeaponType.FLAMETONGUE)]
        [Category("Settings IMBUE")]
        [DisplayName("OffHand_imbue")]
        [Description("If Imbue method is MANUAL set OH imbue to this value")]
        public ImbueWeaponType OffHand_imbue { get; set; }

        public enum CDUseType
        {
            COOLDOWN,
            BOSS,
            MANUAL
        }

        public enum AirTotemType
        {
            CAPACITOR,
            GROUNDIG,
            MANUAL
        }

        [Setting]
        [DefaultValue(AirTotemType.GROUNDIG)]
        [Category("Settings TOTEM")]
        [DisplayName("Air Totem")]
        [Description("Chose Air Totem to pup active as possible CD")]
        public AirTotemType AirTotemActive { get; set; }
        

        [Setting]
        [DefaultValue(CDUseType.MANUAL)]
        [Category("Settings CD")]
        [DisplayName("Use Fire Elemental")]
        [Description("Chose when use your Fire Elemental CD")]
        public CDUseType FireElementalCD { get; set; }

        [Setting]
        [DefaultValue(CDUseType.COOLDOWN)]
        [Category("Settings CD")]
        [DisplayName("Use Feral Spirits")]
        [Description("Chose when use your Feral Spirits CD")]
        public CDUseType FeralSpiritCD { get; set; }

        [Setting]
        [DefaultValue(CDUseType.BOSS)]
        [Category("Settings CD")]
        [DisplayName("Use Storm Lash Totem")]
        [Description("Chose when use your Storm Lash Totem CD")]
        public CDUseType StormlLashTotemCD { get; set; }
        

        [Setting]
        [DefaultValue(CDUseType.MANUAL)]
        [Category("Settings CD")]
        [DisplayName("Use Ascendance")]
        [Description("Chose when use your Ascendance CD")]
        public CDUseType AscendanceCD { get; set; }

        [Setting]
        [DefaultValue(2)]
        [Category("Settings AOE")]
        [DisplayName("Chain Lightining mob #")]
        [Description("Use chain lightining when # mobs > this value")]
        public int ChainLightining_number { get; set; }

        [Setting]
        [DefaultValue(5)]
        [Category("Settings AOE")]
        [DisplayName("Magma Totem mob #")]
        [Description("Use Magma Totem when # mobs > this value")]
        public int MagmaTotem_number { get; set; }

        [Setting]
        [DefaultValue(5)]
        [Category("Settings AOE")]
        [DisplayName("Fire Nova mob #")]
        [Description("Use Fire Nova when # mobs > this value")]
        public int FireNova_number { get; set; }

        [Setting]
        [DefaultValue(true)]
        [Category("Settings HEALING")]
        [DisplayName("assist healing mode")]
        [Description("Enable/Disable assist healing mode")]
        public bool AssistHealing { get; set; }

        [Setting]
        [DefaultValue(80)]
        [Category("Settings HEALING")]
        [DisplayName("HealingRain HP%")]
        [Description("Cast Healing Rain if players NEAR ME below this &hp >= HealingRainNumber ")]
        public int HealingRainHP { get; set; }

        [Setting]
        [DefaultValue(3)]
        [Category("Settings HEALING")]
        [DisplayName("HealingRainNumber of players")]
        [Description("Cast Healing Rain if players NEAR ME below this HealingRain HP% >= this value")]
        public int HealingRainNumber { get; set; }

        [Setting]
        [DefaultValue(40)]
        [Category("Settings HEALING")]
        [DisplayName("HealingSurge HP%")]
        [Description("Cast HealingSurge if player hp <= this value")]
        public int HealingSurgeHP { get; set; }

        [Setting]
        [DefaultValue(true)]
        [Category("Settings HEALING")]
        [DisplayName("HealingSurgeOnlyOnMe")]
        [Description("Cast HealingSurge Only on Shaman or other player too")]
        public bool HealingSurgeOnlyOnMe { get; set; }

        [Setting]
        [DefaultValue(true)]
        [Category("Settings HEALING")]
        [DisplayName("UseHealingTotem")]
        [Description("Pop Healing stream totem or Healing tide totem on healing rain condition")]
        public bool UseHealingTotem { get; set; }
        
    }
}